/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package bank_access;

import mware_lib.IBaseSkeleton;

/**
 * @author Gortex
 */
public class ManagerSkeleton implements IBaseSkeleton {

    ManagerImplBase original;

    protected ManagerSkeleton(ManagerImplBase original) {
        this.original = original;
        System.out.println("ManagerSkeleton gestartet");
    }

    /**
     * Diese methode kriegt den kodierten String(nach reques reply protokoll) prüft welche methode genau auf dem originalobjekt
     *aufgerufen werden soll, prüft ob die parametertypen stimmen und ruft dann die Methode auf dem original auf.
     *sollte eine Exception auftreten wird diese wieder mit dem request-reply protokoll an das Proxyobjekt
     *zurückgeleitet und dort geworfen.
     */
    @Override
    public synchronized String remoteInvoke(String message) {
        try {
            String[] messageAry = message.split(";");

            if (messageAry[0].split(":")[1].equals("createAccount")) {
                String typ1 = messageAry[1].split(":")[1];
                String typ2 = messageAry[3].split(":")[1];
                String param1 = messageAry[2].split(":")[1];
                String param2 = messageAry[4].split(":")[1];

                if (typ1.equals("String") && typ2.equals("String")) {
                    return "exception:none;returntyp:String;returnvalue:" + original.createAccount(param1, param2);

                } else {
                    return "exception:exception;returntyp:RuntimeException;returnvalue:typemismatch";
                }
            } else {
                return "exception:exception;returntyp:RuntimeException;returnvalue:method not found";
            }
        } catch (Exception e) {
            return "exception:exception;returntyp:RuntimeException;returnvalue:" + e.getMessage();
        }
    }
}
